/**
 * 函数基础内容
 */

// 1、函数声明
console.log(plus(10, 5)); // 函数声明定义的函数，可以在定义之前调用
function plus(a, b) {
  return a + b;
}
console.log(plus(10, 5));

// 2、函数表达式，“函数是一个值”，本质上函数是object类型的值
// console.log(minus(10, 5)); // 报错， 函数表达式定义的函数，不能在定义之前调用
let minus = function (a, b) {
  return a - b;
};
console.log(minus(10, 5));

// 3、箭头函数，形式更简略，当函数体内只有一条语句时， 可以去掉{}和return
let multiply = (a, b) => a * b;
console.log(multiply(10, 5));

// 4、可以将函数作为参数传递给另一个函数
let calculate = function (a, b, op) {
  return op(a, b);
};
console.log(calculate(10, 5, plus));
console.log(calculate(10, 5, minus));

// 5、所有函数都有返回值，如果没有return，就返回undefined
let divide = (a, b) => {
  if (b === 0) {
    console.log("除数不能为0");
  } else {
    return a / b;
  }
};
console.log(divide(10, 0));

// 6、参数可以设置默认值，实参和形参不用一一对应，未赋值的形参变量为undefined
let pow = (a, b = 3, c) => {
  console.log(c);
  return a ** b;
};
console.log(pow(10, 2, "hello"));
console.log(pow(10));